import { axios } from '@/utils/request'
import QS from 'qs'
import Vue from 'vue'
// import { ACCESS_TOKEN } from '@/store/mutation-types'
const api = {
  user: '/api/user',
  role: '/api/role',
  service: '/api/service',
  permission: '/api/permission',
  permissionNoPager: '/api/permission/no-pager'
}

export default api

// post
export function postAction(url, parameter) {
  return axios({
    url: url,
    method: 'post',
    data:parameter
  })
}

// post method= {post | put}
export function httpAction(url, parameter, method) {
  if (method == 'get' || !method) {
    return getAction(url, parameter)
  } else if (method == 'post') {
    return postAction(url, parameter)
  } else if (method == 'put') {
    return putAction(url, parameter)
  } else if (method == 'delete') {
    return deleteAction(url, parameter)
  } else if(method == 'restful'){
    return restFulGetAction(url,parameter)
  }
}

// put
export function putAction(url, parameter) {
  return axios({
    url: url,
    method: 'put',
    data: parameter
  })
}

// get
export function getAction(url, params = {}) {
  return axios({
    url: Object.keys(params).length == 0 ? url : url + '?' + QS.stringify(params),
    method: 'get'
    // params: parameter
  })
}

// restful get
export function restFulGetAction(url, params = {}, method) {
  let str = ''
  for (const i in params) {
    str += '/' + params[i]
  }
  return axios({
    url: Object.keys(params).length == 0 ? url : url + str,
    method: method ? method : 'get'
    // params: parameter
  })
}

// deleteAction
export function deleteAction(url, parameter) {
  return axios({
    url: url,
    method: 'delete',
    params: parameter
  })
}

export function getUserList(parameter) {
  return axios({
    url: api.user,
    method: 'get',
    params: parameter
  })
}

export function getRoleList(parameter) {
  return axios({
    url: api.role,
    method: 'get',
    params: parameter
  })
}

export function getServiceList(parameter) {
  return axios({
    url: api.service,
    method: 'get',
    params: parameter
  })
}

export function getPermissions(parameter) {
  return axios({
    url: api.permissionNoPager,
    method: 'get',
    params: parameter
  })
}

// id == 0 add     post
// id != 0 update  put
export function saveService(parameter) {
  return axios({
    url: api.service,
    method: parameter.id == 0 ? 'post' : 'put',
    data: parameter
  })
}

/**
 * 下载文件 用于excel导出
 * @param url
 * @param parameter
 * @returns {*}
 */
export function downFile(url, parameter) {
  return axios({
    url: url,
    params: parameter,
    method: 'get',
    responseType: 'blob',
    headers: {
      'Content-Type': 'application/json; application/octet-stream'
      // token: Vue.ls.get(ACCESS_TOKEN)
    }
  })
}
